package br.com.sms.action;

import java.util.List;

import org.apache.struts2.ServletActionContext;

import br.com.sms.dominio.Mensagem;
import br.com.sms.excecao.SmsException;
import br.com.sms.util.Mensagens;

public class MensagemAction extends Action{
	
	private Mensagem mensagem;
	private List<Mensagem> listaMensagem;
	private String tituloPesquisa;
	
	
	public String salvarMensagem(){
		setMenuAtual(3);
		try {
			getMensagemFacade().validarCampos(this.mensagem);
			boolean edicao = isEdicao();
			if(edicao)
				mensagens.put("mensagem", Mensagens.MENSAGEM_ALTERADA);
			else
				mensagens.put("mensagem", Mensagens.MENSAGEM_SALVA);
			
			mensagem.setUsuario(getUsuarioLogado());
			getMensagemFacade().salvarMensagem(mensagem);
			apresentarMensagens();
			if(edicao)
				return RECUPERAR_MENSAGEM;
			else
				return TELA_INICIAL;
		} catch (SmsException e) {
			erros.put("erro", e.getMessage());
			apresentarErros();
			return TELA_NOVA_MENSAGEM;
		}
		
	}
	
	public String telaMenuMensagem(){
		return TELA_INICIAL;
	}
	
	public String novaMensagem(){
		return TELA_NOVA_MENSAGEM;
	}
	
	public String carregarMensagem(){
		setMenuAtual(3);
		this.mensagem = getMensagemFacade().carregarMensagem(mensagem);
		return null;
	}
	
	public String carregarMensagemEdicao(){
		setMenuAtual(3);
		this.mensagem = getMensagemFacade().recuperarMensagem(mensagem);
		return TELA_NOVA_MENSAGEM;
	}
	
	public String recuperarMensagem(){
		setMenuAtual(3);
		if(tituloPesquisa != null)
			mensagem.setTituloMensagem(tituloPesquisa);
		else
			this.tituloPesquisa = mensagem.getTituloMensagem();
		
		this.listaMensagem = getMensagemFacade().recuperarMensagem(mensagem.getTituloMensagem(), getCliente());

		if(listaMensagem == null || listaMensagem.size() == 0){
			mensagens.put("mensagem", Mensagens.NENHUMA_MENSAGEM_ENCONTRADA);
			apresentarMensagens();
		}
		ServletActionContext.getRequest().setAttribute("listaMensagem", this.listaMensagem);
		limparCampos();
		return TELA_LISTAR_MENSAGEM;
	}
	
	public String excluirMensagem(){
		setMenuAtual(3);
		this.getMensagemFacade().removerMensagem(mensagem);
		mensagens.put("mensagem", Mensagens.MENSAGEM_EXCLUIDA);
		apresentarMensagens();
		return TELA_LISTAR_MENSAGEM;
	}
	
	public String listarMensagem(){
		return TELA_LISTAR_MENSAGEM;
	}
	
	/*get & set*/
	public Mensagem getMensagem() {
		return mensagem;
	}

	public void setMensagem(Mensagem mensagem) {
		this.mensagem = mensagem;
	}
	
	public List<Mensagem> getListaMensagem() {
		return listaMensagem;
	}

	public void setListaMensagem(List<Mensagem> listaMensagem) {
		this.listaMensagem = listaMensagem;
	}

	private void limparCampos(){
		this.mensagem = null;
	}

	public String getTituloPesquisa() {
		return tituloPesquisa;
	}

	public void setTituloPesquisa(String tituloPesquisa) {
		this.tituloPesquisa = tituloPesquisa;
	}
	
	private boolean isEdicao(){
		return this.mensagem.getId() > 0;
	}

}
